//适用于对象比较复杂

class Splitter
{
public:
	virtual void split（） = 0；
	virtual Splitter* clone() = 0; //克隆自己来创建对象

	virtual ~Splitter(){}
}

//
class BinarySplitter: public Splitter
{
public:
	virtual Splitter* clone（）
	{
		return new BinarySplitter(*this);
	}
}
//...


class MainForm：public Form
{
	Splitter* prototype; //原型对象,只做克隆使用
public:
	MainForm(Splitter* prototype)
	{
		this->prototype = prototype;
	}
	void ButtonClick
	{
		Splitter* splitter = prototype->clone(); //多态new
		splitter->split();
	}
}